package com.itheima.upload.oss;

import cn.hutool.core.lang.UUID;
import com.aliyun.oss.OSS;
import com.aliyun.oss.OSSClientBuilder;
import com.itheima.common.Base64Util;
import com.itheima.entity.dto.UploadDto;
import lombok.Data;
import lombok.extern.slf4j.Slf4j;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.stereotype.Component;

import java.io.InputStream;
import java.text.SimpleDateFormat;
import java.util.Date;

/**
 * @author :wujunjie
 * createTime :2022-12-22 17:21
 * description :
 */
@Component
@Data
@ConfigurationProperties(value = "oss")
@Slf4j
public class OssProperties {
    private  String accessKeyId;
    private  String accessKeySecret;
    private  String endpoint;
    private  String bucketName;
    private  String url;


    public String upload(String suffixName, InputStream is) {

        // 文件存储路径
        // 组成部分1：年月日/ 命名图片存储的文件夹
        // 组成部分2：UUID/ 不重复，有顺序 编号生成规则
        // 组成部分3：文件后缀名
        String filename = new SimpleDateFormat("yyyy/MM/dd").format(new Date())
                + "/" + UUID.randomUUID().toString() + "." + suffixName;

        // OSS核心代码
        // build方法（参数1，参数2，参数3）
        // 参数1：endpoint：oss-cn-beijing.aliyuncs.com
        // 参数2：根据上述教程获取（账号）
        // 参数3：根据上述教程获取（密码）
        OSS ossClient = new OSSClientBuilder().build(endpoint, accessKeyId, accessKeySecret);
        // putObject(参数1，参数2，参数3）
        // 参数1：bucketName（取自bucket域名的第一段，类似：tom-tanhua）
        // 参数2：filename，上传到oss上后的存储路径
        // 参数3：文件内容（字节输入流）
        ossClient.putObject(bucketName, filename, is);
        // 关闭（结束）
        ossClient.shutdown();
        // OSS核心代码
        // 图片在aliyun上的存储规则是：域名 + 文件路径
        String ossUrl = url + "/" + filename;
        return ossUrl;
    }

}
